package com.dudu.service;

import java.util.List;

import com.dudu.bean.PoolAbilityInfoBean;
import com.dudu.bean.PoolCaseBean;
import com.dudu.bean.UserBean;

import core.CoreDao;

/**
 * 2016年上半年升级后的号码池功能工具类
 * 这个类里面包：
 * 1.含查询账号的配置的号码池的能力的信息
 * 2.号码池号码的使用计数功能
 * @author weidong
 *
 */
public interface IPoolNumberUtilsService {
	/**
	 * 根据应用key和custAccount账号和能力类型和显号查询配置信息--未经处理
	 * @param dao
	 * @param appKey
	 * @param custAccount
	 * @param abilityType
	 * @param displayNbr
	 * @param usePlatNbr
	 * @return
	 */
	public PoolAbilityInfoBean getPoolNumberInfo(CoreDao dao, String appKey, String custAccount, String abilityType,String displayNbr, String usePlatNbr,String number_vest);
	/**
	 * 根据应用key和custAccount账号和能力类型，获取相应账号所配置的号码池号码--未经处理
	 * @param dao
	 * @param appKey
	 * @param custAccount
	 * @param abilityType
	 * @param usePlatNbr
	 * @return
	 */
	public List<PoolAbilityInfoBean> getPoolNumberInfoList(CoreDao dao, String appKey, String custAccount, String abilityType,String displayNbr, String usePlatNbr,String number_vest);
	/**
	 * 根据账号标识、能力类型、使用状态、使用次数等信息进行过滤后的
	 * 相应账号所配置的号码池号码
	 * @param dao
	 * @param appKey      应用KEY
	 * @param custAccount cust_account
	 * @param abilityType 能力类型
	 * @param usePlatNbr 强制使用平台号码(值为1时，强制使用平台号码发起)
	 * @param number_vest 地区
	 * @return
	 */
	public PoolAbilityInfoBean getPoolNumberInfoFilter(CoreDao dao, String appKey, String custAccount, String abilityType, String usePlatNbr,String number_vest);
	/**
	 * 根据应用key和custAccount账号，记录号码使用次数
	 * @param dao
	 * @param appKey
	 * @param custAccount
	 * @param poolNumberInfoId
	 * @param user
	 * @return
	 */
	public int recordNumTime(CoreDao dao, String appKey, String custAccount, String poolNumberInfoId, UserBean user);
	/**
	 * 根据应用key和custAccount账号和号码能力id查询使用次数
	 * @param dao
	 * @param appKey
	 * @param custAccount
	 * @param poolAbilityId
	 * @return
	 */
	public int queryNumTime(CoreDao dao, String appKey, String custAccount, String poolAbilityId);
	/**
	 * 根据应用key、custAccount账号、日期和号码能力id查询使用次数
	 * @param dao
	 * @param appKey
	 * @param custAccount
	 * @param poolAbilityId
	 * @param dateTime
	 * @return
	 */
	public List<PoolCaseBean> queryNumTimeByDate(CoreDao dao, String appKey, String custAccount, String poolAbilityId, String dateTime);
}
